package com.woniuxy.enjoylife.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.woniuxy.enjoylife.entity.Perm;
import com.woniuxy.enjoylife.entity.Role;
import com.woniuxy.enjoylife.entity.User;
import com.woniuxy.enjoylife.entity.dto.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

@Mapper
@Repository
public interface UserMapper extends BaseMapper<User> {
    public List<User> findAll();

    //用户修改密码
    public int updatePwd(@Param("id") int id, @Param("pwd") String pwd);
    //用户通过邮箱修改密码
    public int updatePwdByEmail(@Param("email") String email,@Param("password") String pwd);
    //用户修改昵称
    public int updateAccount(@Param("id") int id, @Param("account") String account);
    //用户修改头像
    public int updateHead(@Param("id") int id, @Param("img") String img);
    //查询用户密码
    public String findPwd(int id);


    //查询用户基本信息+房屋信息
    public UserDto findDetail(int id);
    //通过活动id去中间表查询参与用户(物管页面用)
    public List<User> findUsersByAid(int aid);

    //查询用户姓名
    String selectUserNames(int id);



    //添加用户
    public int addUser(User user);
    //添加用户角色
    public int addUserRole(@Param("uid") int id, @Param("rid") int rid);
    //添加商户注册申请表
    public int addNewMerchant(int uid);

    //通过用户名查询到用户
    public User findUserByAccount(String account);
    //通过用户的id找到用户的角色是什么
    public String findUsersRole(int uid);
    //通过邮箱查询到用户
    public User findUserByEmail(String email);
    //平台用户管理信息(不分类)
    public List<UserInfoDto> usersInfoAll();
    //平台用户管理信息(分类)
    public List<UserInfoDto> usersInfo(int rid);
    //平台用户管理信息(无分类)
    public List<UserInfoDto> usersInfoNoRole();
    //平台用户状态切换
    public int userSwitch(@Param("id") int id,@Param("status") int status);

    //根据用户id修改账户角色
    public int userRoleChange(@Param("id") int id,@Param("name") String name);
    //根据用户id修改账户邮箱
    public int updateEmailById(@Param("id") int id,@Param("email") String email);
    //根据id删除房屋
    public int delHouseById(@Param("ids") List<Integer> ids,@Param("uid") int id);
    //根据用户id删除所有房屋
    public int delHouseAll(int uid);
    //根据id修改房屋信息
    public int updateHouseInfo(UserHouseDto houseDto);
    //根据商户申请（new_merchant）表，查对应的用户
    public List<User> findApply();

    public User findUserById(Integer id);

    //获取用户头像和昵称
    public HeadAccountDto getDetail(int id);
    //根据用户id，删除商户申请表的申请
    public int delApply(int uid);
    //根据用户id，修改用户状态
    public int changeStatusById(int id);
    //通过用户主id去用户角色中间表查询用户及其对应角色
    public UserRoleMenusDto findUserRoleMenusById(int id);

    //查询用户头像和email
    String selectUserImage(int id);
    String selectUserEmail(int id);

    //查询权限
//    List<String> selectUserPerms(int id);

    int selectUserId(String account);


    //修改头像
    public int changeImage(@Param("image") String imgae,@Param("id") int id);


    //查询对应的角色信息
    List<Role> selectUserRole(Integer id);
    //查询用户发表的评论
    public UserRecentsDto selectPublishRecent(int id);

    User findAuthor(int id);

}
